Ik heb een dataset zoals hieronder weergegeven naam col1 col2 een 10,3 10,9 b 11 15 c 20 7.2 d 6.2 6.2 e 5.3 5.4 f 4.5 4.0 ik wil col1 en col2 van mijn df vergelijken en ik wil een andere kolom maken waarin ik bij het vergelijken van col1- en col2-waarden als de waarde van col2 toeneemt van col1, ik daar naast hen in mijn kolom wil invoeren en of ze dat zijn afnemende dan wil ik schrijven aflopend en geen wijzigingen als ze hetzelfde zijn en ik wil mijn output op deze manier naam col1 col2 col3 een 10,3 10,9 stijgend b 11 15 stijgend c 20 7.2 afnemend d 6.2 6.2 geen verandering e 5,3 5,4 stijgend f 4,5 4,0 afnemend
2021-01-31 08:14:26
Met dplyr: df%>% muteren (Col3 = ifelse (col2 == col1, "geen verandering", ifelse (col2> col1, "toenemende", "afnemende"))) Of gebruik case_when zoals voorgesteld door @akrun: df%>% mutate (Col3 = case_when (col1 == col2 ~ "no change", col2> col1 ~ "Toenemend", TRUE ~ "afnemend")) Resultaat: naam col1 col2 Col3 1 een 10,3 10,9 stijgend 2 b 11,0 15,0 stijgend 3 c 20,0 7,2 afnemend 4 d 6.2 6.2 geen verandering 5 e 5,3 5,4 stijgend 6 f 4,5 4,0 afnemend Gegevens: df <-structure (list (name = c ("a", "b", "c", "d", "e", "f"), col1 = c (10.3, 11, 20, 6.2, 5.3, 4.5), col2 = c (10.9, 15, 7.2, 6.2, 5.4, 4)), class = "data.frame", row.names = c (NA, -6L)) | We kunnen col1 aftrekken door col2 en dan teken gebruiken om waarden toe te wijzen df $ col3 <- c ("afnemend", "geen verandering", "toenemende") [teken (df $ col1 - df $ col2) + 2] df # naam col1 col2 col3 # 1 een 10,3 10,9 afnemend # 2 b 11,0 15,0 afnemend # 3 c 20,0 7,2 toenemend # 4 d 6.2 6.2 geen verandering # 5 e 5,3 5,4 afnemend # 6 f 4.5 4.0 stijgend Of met dplyr kunnen we case_when gebruiken bibliotheek (dplyr) df%>% mutate (col3 = case_when (col1 == col2 ~ "no change", col1> col2 ~ "toenemende", TRUE ~ "afnemend")) | Basis R df $ col3 <-with (df, ifelse (col1> col2, "afnemende", ifelse (col1